// **************** Création champs ajout de snp/mutation **************** //
				
function ajoutSnp(bouton){
	//ajout de  nouveaux champs lorsque l'utilisateur a cliqué sur "ajouter snp" ou "ajouter mutation"
	var xhr = getXMLHttpRequest();
	var id = bouton.id;
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			readData(xhr.responseXML,id);
		} 
	};
	if(id=="snp"){
		//récupération des type_variation et localisation de snp enregistrés dans la base de données
		xhr.open("POST", "snp_infos.php", true);
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xhr.send();
	}
	else{
		//récupération des type_variation, type_mutation et localisation de mutation enregistrés dans la base de données
		xhr.open("POST", "mut_infos.php", true);
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xhr.send();
	}
}

function affiche_autre(oSelect){
	//affichage d'un nouveau champ pour créer nouveau type_variation, type_mutation ou localisation
	var value = oSelect.options[oSelect.selectedIndex].value;
	var name = oSelect.name;
	
	if(value=="autre" && /^(\w+)((s|m){1}[0-9]{1,4})$/.exec(name)){
		var temp = "autre_"+RegExp.$1+RegExp.$2+"_1";
		var autre = document.getElementById(temp);
		autre.style.display="inline";
		
	}
	else if(value!="autre" && /^(\w+)((s|m){1}[0-9]{1,4})$/.exec(name)){
		var temp = "autre_"+RegExp.$1+RegExp.$2+"_1";
		var autre = document.getElementById(temp);
		autre.style.display="none";
	}
}

var snp=1;
var mut=1;

function creerParagraphe(id){
	/* **** Création d'un nouveau paragraphe et d'un titre **** */
	var p = document.createElement("p");
	var titre = document.createElement("h3");
	var texte;
	if(id=="snp"){
		p.id="infos_snp"+snp;
		texte = document.createTextNode("SNP:");
	}
	else{
		p.id="infos_mut"+mut;
		texte = document.createTextNode("Mutation:");
	}
	titre.appendChild(texte);
	p.appendChild(titre);
	
	return p;
}

function creerSpan(nom,texte){
	//création d'un élément html de type span
	var span = document.createElement("span");
	span.className = "code3";
	span.id="erreur_"+nom;
	var text = document.createTextNode("* "+texte);
	span.appendChild(text);
	return span;
}	

function creerLabel(nom){
	//création d'un élément html de type label
	var label = document.createElement("label");
	label.className = "label3";
	var labelt = document.createTextNode(nom+": ");
	label.appendChild(labelt);
	return label;
}

function creerSelect(id,nom){
	//création d'un élément html de type select
	var select = document.createElement("select");
	select.className = "box";
	if(id=="snp"){select.name = nom+snp;}
	else{select.name = nom+mut;}
	if(nom!="valeur_s" && nom!="valeur_m"){select.onchange = function(){affiche_autre(select);};}
	return select;
}

function ajouterOption(nom, valeur,oSelect){
	//création d'un élément html de type option ajouté a un select donné
	var oOption = document.createElement("option");
	var oInner = document.createTextNode(nom);
	oOption.value = valeur;
	oOption.appendChild(oInner);
	oSelect.appendChild(oOption);
	return oSelect;
}

function ajouterNouveau(p,id,nom){
	//création de nouveaux champs
	var preciser = creerLabel("Précisez");
	preciser.className = "label3";
	var input = document.createElement("input");
	input.className = "box";
	input.type = "text";
	var span;
	if(id=="snp"){
		input.name = nom+"_s"+snp;
		input.id = nom+"_s"+snp;
		span = creerSpan(nom+"_s"+snp,"Remplir le champ");
	}
	else{
		input.name = nom+"_m"+mut;
		input.id = nom+"_m"+mut;
		span = creerSpan(nom+"_m"+mut,"Remplir le champ");
	}
	
	var div = document.createElement("div");
	div.className="autre";
	div.id=input.name+"_1";
	
	div.appendChild(preciser);
	div.appendChild(input);
	div.appendChild(span);

	p.appendChild(div);
	return p;
}

function readData(oData, id) {
	//récupération des données renvoyées par les fichier php mut_infos.php et snp_infos.php
	var nodes = oData.getElementsByTagName("item");
	var oSelect = document.getElementById("infos_sm");
	oSelect.style.display="inline-block";
	
	var p = creerParagraphe(id);
	
	/* **** création label et select pour type_variation **** */
	var label1 = creerLabel("Type variation");
	var select1, span1;
	if(id=="snp"){
		select1 = creerSelect(id,"var_s");
		span1 = creerSpan("var_s"+snp,"Sélectionner un type de variation");
	}
	else{
		select1 = creerSelect(id,"var_m");
		span1 = creerSpan("var_m"+mut,"Sélectionner un type de variation");
	}
	select1 = ajouterOption("Sélection", "none",select1);
	
	
	/* **** création label et select pour localisation **** */
	var label2 = creerLabel("Localisation");
	var select2, span2;
	if(id=="snp"){
		select2 = creerSelect(id,"loc_s");
		span2 = creerSpan("loc_s"+snp,"Sélectionner une localisation");
	}
	else{
		select2 = creerSelect(id,"loc_m");
		span2 = creerSpan("loc_m"+mut,"Sélectionner une localisation");
	}
	select2 = ajouterOption("Sélection", "none",select2);
	
				
	/* **** création label et select pour type_mutation **** */
	var label3, select3,span3;
	if(id=="mut"){
		label3 = creerLabel("Type mutation");
		select3 = creerSelect(id,"type_m");			
		select3 = ajouterOption("Sélection", "none",select3);
		span3 = creerSpan("type_m"+mut,"Sélectionner un type de mutation");
	}
	
	/* **** Ajout des options **** */
	var oOption, oInner;
	for (var k=0; k<nodes.length; k++) {
		var id2=nodes[k].getAttribute("id");
		//options de type variation
		if(id2<200){
			oOption = document.createElement("option");
			oInner  = document.createTextNode(nodes[k].getAttribute("name"));
			oOption.value = nodes[k].getAttribute("name");
			oOption.appendChild(oInner);
			select1.appendChild(oOption);
		}
		//options de localisation
		else if(id2>=200 && id2<400){
			oOption = document.createElement("option");
			oInner = document.createTextNode(nodes[k].getAttribute("name"));
			oOption.value = nodes[k].getAttribute("name");
			oOption.appendChild(oInner);
			select2.appendChild(oOption);
		}
		if(id=="mut" && id2>=400){
			oOption = document.createElement("option");
			oInner = document.createTextNode(nodes[k].getAttribute("name"));
			oOption.value = nodes[k].getAttribute("name");
			oOption.appendChild(oInner);
			select3.appendChild(oOption);
		}
	}
	
	select1 = ajouterOption("Nouveau", "autre",select1);
	select2 = ajouterOption("Nouveau", "autre",select2);
	
	p.appendChild(label1);
	p.appendChild(select1);
	p.appendChild(span1);
	p = ajouterNouveau(p,id,"autre_var");
	p.appendChild(label2);
	p.appendChild(select2);
	p.appendChild(span2);
	p = ajouterNouveau(p,id,"autre_loc");
	
	/* **** select pour la valeur **** */
	var label4 = creerLabel("Valeur");
	var select4,span4;
	if(id=="snp"){
		select4 = creerSelect(id,"valeur_s");
		span4 =  creerSpan("valeur_s"+snp,"Sélectionner une valeur");
	}
	else{
		select4 = creerSelect(id,"valeur_m");
		span4 =  creerSpan("valeur_m"+mut,"Sélectionner une valeur");
	}
	select4 = ajouterOption("Sélection","none",select4);
	select4 = ajouterOption("Sauvage","0",select4);
	select4 = ajouterOption("Homozygote","2",select4);
	select4 = ajouterOption("Hétérozygote","1",select4);
	p.appendChild(label4);
	p.appendChild(select4);
	p.appendChild(span4);
	
	if(id=="mut"){
		select3 = ajouterOption("Nouveau", "autre",select3);
		p.appendChild(label3);
		p.appendChild(select3);
		p.appendChild(span3);
		p = ajouterNouveau(p,id,"autre_type");		
	}
	oSelect.appendChild(p);

	var bouton = document.getElementById("bouton3");
	bouton.style.display="block";
	
	if(id=="snp"){
		document.getElementById("nb_snp").value=snp;
		snp++;
	}
	else{
		document.getElementById("nb_mut").value=mut;
		mut++;
	}
}

function afficher(oSelect){
	//affichage d'un champ pour créer un nouveau gene
	var value = oSelect.options[oSelect.selectedIndex].value;
	var elt = document.getElementsByClassName("autre_g");
	
	if(value=="autre"){
		for (var i=0; i<elt.length; i++){
			elt[i].style.display="inline";
		}
	}
	else{
		for (var i=0; i<elt.length; i++){
			elt[i].style.display="none";
		}
	}

}

function verif_form(f){ //vérification du formulaire avant l'envoie au serveur
	var dateOk = verifDate(f.date);
	var expOk = verifSelect(f.exp);
	var entierOk = verifRadio(f.entier);
	var geneOk = verifSelect(f.gene);
	
	var liste_snp = verifMut_snp(f,snp,"s");
	var liste_mut = verifMut_snp(f,mut,"m");
	
	if(dateOk && expOk && entierOk && geneOk && liste_snp && liste_mut){
		return true;
	}
	else{
		alert("Veuillez remplir correctement tous les champs");
		return false;
	}
}

function verifMut_snp(f,temp,type){
	//vérification que tous les champs pour les mutations et les snp ont bien été remplis
	var cpt=0;
	for (var i=1; i<temp; i++){
		var variationOk = verifSelect(f.elements["var_"+type+i]);
		var locOk = verifSelect(f.elements["loc_"+type+i]);
		var valeurOk = verifSelect(f.elements["valeur_"+type+i]);
		var typeOk = true;
		if(type=="m"){typeOk = verifSelect(f.elements["type_"+type+i]);}
		if(!variationOk || !locOk || !valeurOk || !typeOk){cpt++;}
	}
	if(cpt==0){return true;}
	else{return false;}
}


